package com.partsoft.dits.integrate;

import com.partsoft.dits.DataDescriptorRegistry;
import com.partsoft.dits.DescriptorAccepter;
import com.partsoft.dits.TableDataEdgeDescriptor;

/**
 * 表边界描述符注册表接口
 * @param <E> 必须实现{@link TableDataEdgeDescriptor}接口
 */
public interface TableDataDescriptorRegistry<E extends TableDataEdgeDescriptor> extends
		DataDescriptorRegistry<E> {

	/**
	 * 获取指定的描述符
	 * @param dsName 数据源名称
	 * @param schemaName 模式名称
	 * @param tableName 数据表名称
	 * @param messageCode 消息代码
	 * @return 实现{@link TableDataEdgeDescriptor}接口的对象
	 */
	E getDescriptor(String dsName, String schemaName, String tableName, String messageCode);
	
	/**
	 * 获取指定的描述符列表
	 * @param dsName 数据源名称
	 * @param schemaName 模式名称
	 * @param tableName 数据表名称
	 * @return 实现{@link TableDataEdgeDescriptor}接口的对象数组
	 */
	E[] getDescriptors(String dsName, String schemaName, String tableName);
	
	
	/**
	 * 获取指定的描述符列表
	 * @param dsName 数据源名称
	 * @param schemaName 模式名称
	 * @param tableName 数据表名称
	 * @param accepter 消息接受器
	 * @return 实现{@link TableDataEdgeDescriptor}接口的对象数组
	 */
	E[] getDescriptors(String dsName, String schemaName, String tableName, DescriptorAccepter<E> accepter);
	
	/**
	 * 获得描述符个数
	 * @param dsName 数据源名称
	 * @param schemaName 模式名称
	 * @param tableName 数据表名称
	 * @return 个数
	 */
	int countDescriptor(String dsName, String schemaName, String tableName);
	
	/**
	 * 获得描述符个数
	 * @param dsName 数据源名称
	 * @param schemaName 模式名称
	 * @param tableName 数据表名称
	 * @param accepter 消息接受器
	 * @return 个数
	 */
	int countDescriptor(String dsName, String schemaName, String tableName, DescriptorAccepter<E> accepter);

	
}
